#ifndef EDITORFACTORY_H
#define EDITORFACTORY_H

#include "baseeditor.h"
#include "EditorTypes.h"
#include <QWidget>
#include <memory>

class EditorFactory
{
public:
    // 静态方法创建编辑器
    static BaseEditor* createEditor(LanguageType type, QWidget *parent = nullptr);

    // 根据文件扩展名创建编辑器
    static BaseEditor* createEditorByExtension(const QString &extension, QWidget *parent = nullptr);

    // 获取支持的语言类型列表
    static QList<LanguageType> getSupportedLanguages();

    // 获取语言类型的显示名称
    static QString getLanguageDisplayName(LanguageType type);

    // 获取语言类型的文件扩展名
    static QStringList getLanguageExtensions(LanguageType type);

    // 根据扩展名推断语言类型
    static LanguageType inferLanguageFromExtension(const QString &extension);

private:
    EditorFactory() = default; // 禁止实例化
};

#endif // EDITORFACTORY_H
